SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE PROCEDURE [dbo].[SP_TCDOCU_COBR_Q01]          
/*----------------------------------------------------------------	*/          
/*-- Empresa  : OFISIS S.A.											*/          
/*-- Cliente  : OFISIS												*/          
/*-- Sistema  : Tesoreria											*/          
/*-- Programa  : Reporte Seguimiento Aplicaciones Pagos O/C            
    a FACTURAS														*/          
/*-- Script  : SP_TCDOCU_COBR_Q01									*/          
/*-- Nombre  : SP_TCDOCU_COBR_Q01									*/          
/*-- Desarrollado : Andres Soria									*/          
/*-- Fecha  : 18/10/2011											*/          
/*-- Base de Datos : MS SQL Server									*/          
/*-- Versi®n  : 7.0													*/          
/*----------------------------------------------------------------	*/          
          
/*----------------------------------------------------------------	*/          
/*-- Modificado por  :												*/          
/*-- Fecha modificaci®n  :											*/          
/*-- Detalle modificaci®n:   n										*/          
/*----------------------------------------------------------------	*/          
/* drop proc SP_TCDOCU_COBR_Q01										*/          
/* grant all on SP_TCDOCU_COBR_Q01 to public						*/          
/* SP_TCDOCU_COBR_Q01 '01', '00000002', '00000002'					*/          
/*----------------------------------------------------------------	*/          
          
 @ISCO_EMPR TD_VC_002,          
 @ISCO_UNID_CONC TD_VC_003,          
 @ISNU_AMAR_INIC TD_VC_008,           
 @ISNU_AMAR_FINA TD_VC_008,          
 @IDFE_AMAR TD_DT_001          
 As          
Declare          
 @CSCO_TIDO_ORIG   TD_VC_003,          
 @CSNU_DOCU_ORIG   TD_VC_020,          
 @CSCO_TIDO_DEST   TD_VC_003,          
 @CSNU_DOCU_DEST   TD_VC_020,          
 @CSNU_AMAR        TD_VC_008,          
 @CDFE_AMAR    TD_DT_001,          
 @CSCO_MONE    TD_VC_003,          
 @CNIM_TOTA   TD_NU_016_004,          
 @CNIM_PAGO_DEST   TD_NU_016_004,          
 @VSNU_AMAR_AUXI   TD_VC_008,          
 @VINU_SECU        TD_IN_001,      
 @CSCO_CNTA_EMPR TD_VC_020,      
 @CSTI_AUXI_DOCU   TD_VC_001,      
 @CSCO_CLIE TD_VC_020,      
 @CSCO_ORDE_SERV    TD_VC_020,    
 @VSCO_MONE_NACI TD_VC_003,     
 @VSCO_MONE_EXTR TD_VC_003,    
 @VSTI_CAMB TD_VC_001,     
 @VSTI_ORIG TD_VC_001    
          
  Create Table #TWDOCU_COBR          
  ( NU_TRAN        Varchar(8) NULL,           
    NU_SECU        int  NULL,            
    FE_AMAR    Datetime  NULL,          
    CO_MONE    VarChar(3)   NULL,           
    CO_TIDO_ORIG   VarChar(3)   NULL,          
    NU_DOCU_ORIG   VarChar(15)   NULL,          
    IM_PAGO_ORIG   NUMERIC(16,4),          
    CO_TIDO_DEST   VarChar(3)   NULL,          
    NU_DOCU_DEST   VarChar(15)   NULL,          
    IM_PAGO_DEST   NUMERIC(16,4),    
    TI_AUXI_DOCU     Varchar(3) NULL,      
    CO_CLIE   Varchar(20) NULL)          
          
--Select @VINU_SECU = 0          
-- El CU_TDDOCU_COBR_Q01_1 posee un documento con su n-mero     
    
    
 SELECT @VSCO_MONE_NACI = CO_MONE_DEFA,             
   @VSCO_MONE_EXTR = CO_MONE_EXTR                        
 FROM TMPARA_TESO              
 WHERE CO_EMPR = @ISCO_EMPR              
    
    
  Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG              
  From TTFACA_OPCI              
  Where CO_EMPR = @ISCO_EMPR              
  And CO_MODU = 'TEEM0001'              
  And CO_MENU = 'FTEEPBV'              
          
  If @VSTI_CAMB Is Null              
   Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG              
   From TMPARA_TESO              
   Where CO_EMPR = @ISCO_EMPR              
    
          
Select @VSNU_AMAR_AUXI = '@@@@'          
          
Declare CU_TDDOCU_COBR_Q01_1 cursor          
For          
Select T2.NU_AMAR, T2.FE_AMAR, T2.CO_MONE, T2.CO_TIPO_DOCU, T2.NU_DOCU, MAX(T2.IM_TOTA)    
From TDDOCU_COBR T1, TCDOCU_COBR T2          
Where T1.CO_EMPR = @ISCO_EMPR           
And T1.CO_UNID_CONC = @ISCO_UNID_CONC          
And T1.NU_AMAR >= @ISNU_AMAR_INIC           
And T1.NU_AMAR <= @ISNU_AMAR_FINA          
And Year(T1.FE_AMAR) = Year(@IDFE_AMAR)          
And Month(T1.FE_AMAR) = Month(@IDFE_AMAR)          
AND T1.CO_EMPR = T2.CO_EMPR          
And T1.CO_UNID_CONC = T2.CO_UNID_CONC    
AND T1.NU_AMAR = T2.NU_AMAR          
AND T1.FE_AMAR = T2.FE_AMAR       
GROUP BY    T2.NU_AMAR, T2.FE_AMAR, T2.CO_MONE, T2.CO_TIPO_DOCU, T2.NU_DOCU     
--And CO_TIPO_DOCU IS NOT NULL           
          
Open CU_TDDOCU_COBR_Q01_1          
Fetch CU_TDDOCU_COBR_Q01_1 into @CSNU_AMAR, @CDFE_AMAR, @CSCO_MONE, @CSCO_TIDO_ORIG, @CSNU_DOCU_ORIG, @CNIM_TOTA    
While @@fetch_status = 0          
  Begin          
    If @@fetch_status != 0          
       Begin          
         Raiserror 20001 'Fin de archivo'          
         Close CU_TDDOCU_COBR_Q01_1          
         Deallocate CU_TDDOCU_COBR_Q01_1          
         Return           
       end           
          
    If @CSNU_AMAR != @VSNU_AMAR_AUXI          
       Begin          
 Select @VSNU_AMAR_AUXI = @CSNU_AMAR          
 Select @VINU_SECU = 0          
       End           
          
    Select @VINU_SECU = @VINU_SECU + 1          
          
    Insert into #TWDOCU_COBR (NU_TRAN, NU_SECU, FE_AMAR, CO_MONE, CO_TIDO_ORIG, NU_DOCU_ORIG, IM_PAGO_ORIG)          
    Values (@CSNU_AMAR, @VINU_SECU, @CDFE_AMAR, @CSCO_MONE, @CSCO_TIDO_ORIG, @CSNU_DOCU_ORIG, @CNIM_TOTA)          
          
    Fetch CU_TDDOCU_COBR_Q01_1 into @CSNU_AMAR, @CDFE_AMAR, @CSCO_MONE, @CSCO_TIDO_ORIG, @CSNU_DOCU_ORIG, @CNIM_TOTA          
  End          
          
Close CU_TDDOCU_COBR_Q01_1          
Deallocate CU_TDDOCU_COBR_Q01_1          
          
--Select * from #TWDOCU_COBR          
--Order by NU_TRAN, NU_SECU          
          
          
Select @VINU_SECU = 0          
Select @VSNU_AMAR_AUXI = '@@@@'          
          
-- cursor obtiene todas las letras del documento por proveedor / cuenta         
Declare CU_TDDOCU_COBR_Q01_1 cursor          
For          
    
Select T1.NU_AMAR, T1.CO_TIPO_DOCU, T1.NU_DOCU, T1.TI_AUXI_DOCU, T1.CO_CLIE,     
( PatIndex( T3.ST_SIGN, 'S' ) - PatIndex( T3.ST_SIGN, 'N' ) )*    
  Round(dbo.FN_TCFACT_CAMB_Q05( T1.CO_MONE, T2.CO_MONE,    
  T2.FE_AMAR, T1.IM_COBR, @VSTI_CAMB,    
  @VSTI_ORIG, 'N', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, T2.FA_TIPO_CAMB), 2)    
    
    
--IM_PAGA       
From TDDOCU_COBR T1, TCDOCU_COBR T2, TTDOCU_CNTB T3    
Where T1.CO_EMPR = @ISCO_EMPR         
And T1.CO_UNID_CONC = @ISCO_UNID_CONC      
And T1.NU_AMAR >= @ISNU_AMAR_INIC           
And T1.NU_AMAR <= @ISNU_AMAR_FINA          
And Year(T1.FE_AMAR) = Year(@IDFE_AMAR)          
And Month(T1.FE_AMAR) = Month(@IDFE_AMAR)          
and T1.CO_TIPO_DOCU IS NOT NULL       
And T1.CO_TIPO_DOCU = T3.TI_DOCU    
AND T1.CO_EMPR = T2.CO_EMPR          
And T1.CO_UNID_CONC = T2.CO_UNID_CONC    
AND T1.NU_AMAR = T2.NU_AMAR          
AND T1.FE_AMAR = T2.FE_AMAR     
--AND CO_CNTA_EMPR IS NOT NULL            
          
Open CU_TDDOCU_COBR_Q01_1          
Fetch CU_TDDOCU_COBR_Q01_1 into @CSNU_AMAR, @CSCO_TIDO_DEST, @CSNU_DOCU_DEST,      
@CSTI_AUXI_DOCU, @CSCO_CLIE, @CNIM_PAGO_DEST          
While @@fetch_status = 0          
  Begin          
    If @@fetch_status != 0          
Begin          
         Raiserror 20001 'Fin de archivo'          
         Close CU_TDDOCU_COBR_Q01_1          
         Deallocate CU_TDDOCU_COBR_Q01_1          
         Return           
       end           
          
--    Select @CSNU_AMAR, @CSCO_TIPO_DOCU, @CSNU_DOCU          
          
    If @CSNU_AMAR != @VSNU_AMAR_AUXI          
       Begin          
 Select @VSNU_AMAR_AUXI = @CSNU_AMAR          
 Select @VINU_SECU = 0          
       End           
          
    Select @VINU_SECU = @VINU_SECU + 1          
          
    If NOT Exists ( Select * From #TWDOCU_COBR           
 Where NU_TRAN = @CSNU_AMAR          
 And   NU_SECU = @VINU_SECU)          
       Insert into #TWDOCU_COBR (NU_TRAN, NU_SECU, CO_TIDO_DEST, NU_DOCU_DEST, IM_PAGO_DEST, TI_AUXI_DOCU,CO_CLIE)          
       Values (@CSNU_AMAR, @VINU_SECU, @CSCO_TIDO_DEST, @CSNU_DOCU_DEST, @CNIM_PAGO_DEST, @CSTI_AUXI_DOCU,@CSCO_CLIE)          
    Else           
       Update #TWDOCU_COBR           
       Set CO_TIDO_DEST = @CSCO_TIDO_DEST, NU_DOCU_DEST = @CSNU_DOCU_DEST, IM_PAGO_DEST = @CNIM_PAGO_DEST,    
     TI_AUXI_DOCU = @CSTI_AUXI_DOCU,CO_CLIE = @CSCO_CLIE      
     Where NU_TRAN = @CSNU_AMAR And NU_SECU = @VINU_SECU            
          
     Fetch CU_TDDOCU_COBR_Q01_1 into @CSNU_AMAR, @CSCO_TIDO_DEST, @CSNU_DOCU_DEST, @CSTI_AUXI_DOCU, @CSCO_CLIE, @CNIM_PAGO_DEST          
  End          
          
close CU_TDDOCU_COBR_Q01_1          
deallocate CU_TDDOCU_COBR_Q01_1          
          
Select   T1.NU_TRAN, T1.FE_AMAR, T2.DE_MONE, T1.CO_TIDO_ORIG, T1.NU_DOCU_ORIG, T1.IM_PAGO_ORIG, T1.CO_TIDO_DEST,           
  T1.NU_DOCU_DEST, T1.IM_PAGO_DEST, T1.TI_AUXI_DOCU, T1.CO_CLIE       
From     #TWDOCU_COBR T1          
Left Outer Join TTMONE T2          
On    T1.CO_MONE = T2.CO_MONE          
Order By NU_TRAN, NU_SECU           
Return    
          
/*------------------------------ FIN ---------------------------------*/ 
GO
